Data centers are facilities that contain computing and storage resources for enabling online services, such as website hosting, cloud computing, cloud storage, telecommunications, and the like. Currently, many online service providers are aggressively building their own data centers in order to provide one or more online services. In the meantime, many hardware manufacturers are also developing cost-effective and high-performance data center switches to meet the service demands of the data centers.
In addition, Software Defined Networking (SDN) enabled switches have emerged as an important building block in managing the data centers. SDN is an approach to computer networking that allows network administrators to manage network services by decoupling network control functions from data forwarding functions. This allows network administrators to define the network control functions and to define an abstraction of the underlying network infrastructure for desired applications and desired network services.
However, most data center switches do not address network congestion, which may result in packet losses and may affect a quality of service (QoS) of some data flows. In data centers, packet loss mainly occurs due to momentary data bursts rather than high link utilization. Packet loss due to data bursts can be explained by the bursty nature of traffic in data center networks. Because packet loss can be attributed to data bursts instead of high link utilization, increasing switch capacity may not provide a solution for addressing network congestion in data centers. Some switch-side solutions utilize Explicit Congestion Notification (ECN) functionality, but such solutions may not be scalable in terms of the number of concurrent data flows. For example, Data Center TCP (DCTCP), which controls a server's sending rate by exploiting the ECN, can endure up to thirty five (35) connections without suffering any packet loss. However, most data centers may have a number of concurrent flows that frequently exceeds thirty five (35) flows per server.